<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 箭头函数  es6新增的一种函数的 写法
    // function fn(val){
    //     return val
    // }
    // console.log(fn(1));
//     let fn = (val)=>{
//         return  val
//     }
//    console.log( fn(1));
   let fn = val=>val  //=>   //省略掉{} return  箭头函数自带return
   console.log(fn(1));

   let fn1 = (a,b)=>a+b
   console.log(fn1(1,2));


//    箭头函数和普通函数有什么区别 ？？ 
// 1.写法区别
// function arg(){
//    console.log(arguments);//接受不确定参数
//    let sum = 0
//    for(let i=0;i<arguments.length;i++){
//     sum+=arguments[i]
//    }
//    return sum
// }
// console.log(arg(1,2,3,4,5,6,7,9,4,2,5));
// 2.arguments区别
// let arg = (...rest)=>{
//     console.log(rest);//...rest 剩余运算符 可以获取到箭头函数的不确定参数
// //    console.log(arguments);  //箭头 函数中没有arguments参数
// }
// arg(1,2,3,4,5,6,7,9,4,2,5)

// 3.箭头函数的this和普通函数的this指向不同

// let fun = ()=>{
//   console.log(this);
// }
// fun()


// function fun1(){
//   console.log(this);
// }
// fun1()

// let obj = {
//     name:'张三',
//     sing:function(){
//        window.setTimeout(function(){
//          console.log(this); //window
//        },1000)
//     }
// }
// obj.sing()
// 在箭头函数中，不固化this  箭头函数的this指向，只和声明箭头函数的作用域的this指向有关系
// 箭头函数的this指向声明箭头函数作用域的this  或者说 父作用域的this一致
let obj = {
    name:'张三',
    sing:function(){
        console.log(this);
       window.setTimeout(()=>{
        console.log(this);
       },1000)
    }
}
obj.sing()



// 4.箭头函数不能使用new关键字  ,箭头函数中没有 prototype  普通的函数的prototype 是constructor


// function Star(name){
//     this.name = name
// }
// console.log(Star.prototype);
// let s = new Star('张三')
// console.log(s);


let Star = (name)=>{
    this.name = '张三'
}
console.log(Star.prototype);
// let s = new Star()   //Star is not a constructor






    



</script>
</html>